package com.wl.dzt.sys.core.dao.mate;

import java.util.HashMap;
import java.util.Map;

/**
 * @author wl_code@163.com
 * @version 1.0
 * @date 2018/7/5/005
 * @description 数据库源信息
 * 用于封装数据库的源信息
 * 表格信息维护
 */
public class DataMateBase {
    /**
     * 数据库表源信息
     */
    private static final Map<Class<?>, DataMateTable> DATA_MATE_TABLES = new HashMap<>();

    /**
     * 表名和类映射
     */
    public static final Map<String, Class<?>> DATA_TABLE_CLASS = new HashMap<>();

    /**
     * <b>填充表格</b>
     * <p>
     * 根据数据库源信息填充表格
     * </p>
     *
     * @param clazz         当前类
     * @param dataMateTable 表格源信息
     */
    public static void setTable(Class<?> clazz, DataMateTable dataMateTable) {
        DATA_MATE_TABLES.put(clazz, dataMateTable);
    }

    /**
     * <b>获取表格</b>
     * <p>
     * 根据实体类得到所对应的表源信息
     * </p>
     *
     * @param clazz 类
     * @return 源表格
     */
    public static DataMateTable getTable(Class<?> clazz) {
        return DATA_MATE_TABLES.get(clazz);
    }

    /**
     * <b>移除表格</b>
     * <p>
     * 根据实体类移除表所对应的源信息
     * </p>
     *
     * @param clazz 类
     */
    public static void deleteTable(Class<?> clazz) {
        DATA_MATE_TABLES.remove(clazz);
    }

    /**
     * <b>获取所有的实体表</b>
     * <p>
     * 直接获取所有的表格源信息
     * </p>
     *
     * @return 表格源信息对象
     */
    public static Map<Class<?>, DataMateTable> getAllTales() {
        return DATA_MATE_TABLES;
    }

}
